from tools import *
from sys_sqlite3 import *
from tab_func import *
"""
    header:表头，可为空（使用查询结果的名称显示）
        field:  字段
        caption:显示名称
        width:宽（字符）
        align:对齐
        format:格式
        order:排序,_not_=不能排序,asc=升序,desc=降序，为空表示未排序
        trans:数据转换指令
        特殊字段名：_row_num_,表示行号

    格式说明：
        1 日期时间：        "%Y-%m-%d %H:%M:%S",%开始，Y=4位年份，y=2位年份
        2 金额、数字：      ":,.2",冒号开始，使用时：{:,.2f}
        3 字典类型：        请参考上面的“数据字典说明”，单选、多选都支持,如：1=星期一&2=星期二&3=星期三
        4 秒数转换为时间：  sec_to_time sec_to_time/h时m分s秒，使用斜线/分隔，格式可省略，默认为h:m:s
        5 友好的文件大小:   file_size file_size/1,使用斜线/分隔，后面的小数位可省略，默认为2

    统计行说明
        格式：字段,统计方式1/转换格式/前缀/后缀|统计方式2/转换格式/前缀/后缀|更多..
        每个字段可以有多种统计方式。
        统计方式支持5种（小写）：
            sum（合计）
            count（计数）
            avg平均
            max（最大值）
            min（最小值）
        转换格式支持3种：
            秒数转换为时间：sec_to_time sec_to_time-h时m分s秒，使用斜线-分隔，格式可省略，默认为h:m:s
            友好的文件大小：file_size file_size-1，使用斜线-分隔，后面的小数位可省略，默认为2
            数值格式        
"""
class CtrlPage():
    def __init__(self):
        self.tools      = Tools()
        self.sys_sqlite = SysSqlite()
        self.tab_func   = TabFunc()
        self.cf         = self.conf()
    # 取得配置
    def conf(self):
        return {
            'title':    '页面管理', #标题
            'obj_name': '页面',     #对象名称
            'where': [

            ],
            'header': [
                {'field': '_row_num_',      'caption': '序号',      'width':10,   'align':'center', 'format':'', 'order':'_not_', 'trans':''},
                {'field': 'page_id',        'caption': '页ID',      'width':10,   'align':'center', 'format':'sec_to_time', 'order':'asc', 'trans':''},
                {'field': 'author_uid',     'caption': '作者ID',    'width':20,   'align':'n',      'format':':,.3',  'order':''},
                {'field': 'author_username','caption': '作者姓名',  'width':12,   'align':'n',      'format':'',  'order':''},
                {'field': 'page_title',     'caption': '标题',      'width':10,   'align':'center', 'format':'',  'order':''},
                {'field': 'addtime',        'caption': '添加时间',  'width':10,   'align':'w',      'format':'file_size',  'order':''},
                {'field': 'addtime2',       'caption': '添加时间2',  'width':10,   'align':'w',      'format':'%y-%m-%d %H:%M',  'order':''},
                {'field': 'is_del',         'caption': '删除',      'width':22,   'align':'center', 'format':'0=&1=是',   'order':'_not_'},
                {'field': 'ext_info',       'caption': '扩展信息',  'width':15,   'align':'w', 'format':'',  'order':''},
            ], 
            'id_field': 'page_id',  #id字段
            'sql':      "select *, strftime('%Y-%m-%d %H:%M:%S', addtime, 'unixepoch') as addtime2 from page <order> limit 20",
            'data':     [],
            'row_height': 60,       #行高（px）
            'multiselect': False,   #是否可多选
            'stat_row': [
                {'field': 'page_id', 'stat': [

                ] }
            ],         #统计行定义
            'stat_row_caption': '', #统计行文本
            'query_caption': '刷新',    #查询按钮标题
            'print_grf': '',        #打印样式文件?
            'show_adv_option': False,#显示高级选项?
            'show_col_check': False,   # 是否使用检视功能，可隐藏为空或为0的列?

        }

    def query(self, where_exp = '', order_exp = ''):
        """执行查询，返回字典的列表
        """
        return self.sys_sqlite.query2(self.cf['sql'], where_exp, order_exp)

    def add(self, tab_grid):
        self.tools.msg('add')
    def delete(self, tab_grid):
        # self.tools.msg('delete')
        sl = tab_grid.get_selected_id()
        if len(sl) == 0: return

        print("delete", sl[0], tab_grid.get_selected_cell(4))